package cn.smbms.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.smbms.pojo.User;

public interface UserMapper {
	/**
	 * 通过userCode获取User
	 * @param connection
	 * @param userCode
	 * @return
	 * @throws Exception
	 */
	public User getLoginUser(String userCode);
	
	/**
	 * 查询用户表记录数
	 * @return
	 */
	public int count();
	
	/**
	 * 查询用户列表
	 * @return
	 */
	public List<User> getUserList();
	
	/**
	 * 根据用户名称查询用户列表(模糊查询)
	 * @param userName
	 * @return
	 */
	public List<User> getUserListByUserName(String userName);
	
	/**
	 * 查询用户列表(参数：Map)
	 * @return
	 */
	public List<User> getUserListByMap(Map<String, String> userMap);
	
	/**
	 * 查询用户列表(参数：对象入参)
	 * @return
	 */
	public List<User> getUserLists(User user);
	
	/**
	 * 增加用户
	 * @param user
	 * @return
	 */
	public int add(User user);
	
	/**
	 * 修改用户信息
	 * @param user
	 * @return
	 */
	public int modify(User user);	
	
	/**
	 * 修改当前用户密码
	 * @param id
	 * @param pwd
	 * @return
	 */
	public int updatePwd(@Param("id")Integer id, @Param("userPassword")String pwd);	
	
	/**
	 * 根据userId删除用户信息
	 * @param id
	 * @return
	 */
	public int deleteUserById(@Param("id")Integer delId);	
	
	/**
	 * 根据roleId获取用户列表
	 * @param roleId
	 * @return
	 */
	public List<User> getUserListByRoleId(@Param("userRole")Integer roleId);	
	
	/**
	 * 获取指定用户的地址列表(collection)
	 * @param userId
	 * @return
	 */
	public List<User> getAddressListByUserId(@Param("id")Integer userId);		
	
	/**
	 * 根据用户角色列表，获取该角色列表下用户列表信息-foreach_array
	 * @param roleIds
	 * @return
	 */
	public List<User> getUserByRoleId_foreach_array(Integer[] roleIds);
	/**
	 * 根据用户角色列表，获取该角色列表下用户列表信息-foreach_list
	 * @param roleList
	 * @return
	 */
	public List<User> getUserByRoleId_foreach_list(List<Integer> roleList);	
	/**
	 * 根据用户角色列表，获取该角色列表下用户列表信息-foreach_map(单参数封装成map)
	 * @param roleMap
	 * @return
	 */
	public List<User> getUserByRoleId_foreach_map(Map<String,Object> roleMap);	
	
	/**
	 * 根据用户角色列表和性别(多参数)，获取该角色列表下指定性别的用户列表信息-foreach_map
	 * @param conditionMap
	 * @return
	 */
	public List<User> getUserByConditionMap_foreach_map(Map<String,Object> conditionMap);	
	
	/**
	 * 根据用户角色列表和性别(多参数)，获取该角色列表下指定性别的用户列表信息-foreach_map
	 * 分页功能
	 * @param conditionMap
	 * @return
	 */
	public List<User> getUserByConditionMap_foreach_map2(Map<String,Object> conditionMap);

	/**
	 * 通过用户ID获取用户信息
	 * @param userid
	 * @return
	 */
	public User getUserById(Integer userid);

	public User getUserByUserName(String username);

	
}
